//创建一个中间件 暴露出去(作用校验客户权限状态)
//引入数据库文件
const adminModel = require('../db/model/adminModel')
//引入jwt解码文件
const { jwtDecode } = require('../utils/jwt')
module.exports = async (req, res, next) => {
  //获取到token
  const { token } = req.headers
  //对token进行解码(返回的是一个对象,code代表解码的情况)
  const jwtResult = jwtDecode(token, 'NB!')
  //先判断错误的
  if (jwtResult.code === 0) {
    return res.send({
      code: 20000,
      mesage: '服务端校验失败',
      data: null
    })
  }
  //解码成功后,拿到adminName,再去数据库进行查询status是否为1
  try {
    const findResult = await adminModel.findOne({
      adminName: jwtResult.adminName,
    })
    //console.log(findResult, 'findResult');
    if (findResult.status === 0) {
      return res.send({
        code: 20000,
        mesage: '数据库保存的status失败',
        data: null
      })
    }
    //如果成功了直接next下一步
    next()
  } catch (e) {
    console.log('查询status出现异常：' + e.message);
    return res.send({
      code: 20000,
      mesage:'查询status出现异常:'+e.message,
      data:null
    })
  }
}
